package com.sxj.corejava.code10_异常;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author 石小俊
 * @date 2024年05月11日 8:43
 */
public class Test02_异常处理 {

    public static void main(String[] args) throws ParseException, ClassNotFoundException {
        test02("");
    }

    public static void test01() {
        try {
            int i = 1 / 0;
            System.out.println("没有异常时执行的代码");
        } catch (ArithmeticException e) {
            System.err.println("当遇到ArithmeticException异常时执行的代码");
//            e.printStackTrace();
            System.err.println(e.getMessage());
            // 在此处return时,finally中的代码依然会执行
//            return;
            // 如果不希望执行finally中的代码,可以通过终止JVM的方式进行结束
            System.exit(0);
        } finally {
            System.out.println("无论是否存在异常都会执行的代码");
        }
    }

    public static void test02(String s) throws ParseException, ClassNotFoundException {
        try {
            Date date = new SimpleDateFormat("yyyy-MM-dd").parse(s);
        } catch (ParseException e) {
            System.err.println("这边有异常");
            e.printStackTrace();
            // 此时可以通过throw关键字将异常抛出去,不进行出库
            // throw 后面跟的是异常对象,通过new Xxx()创建一个对应的异常对象
            // 当抛出异常对象后,在方法体中需要通过throws 异常类型进行抛出,如果抛出多个异常,通过逗号分隔即可
//            throw new Exception("");
            // 也可以直接将当前捕获到的异常对象直接抛出去
            // throw语句效果类似于return,表示结束方法
            throw e;
        } finally {
        }
        try {
            Class.forName("xxx");
        } catch (ClassNotFoundException e) {
            throw e;
        }
    }

}
